<!DOCTYPE html>
<html>

	<head>
		<meta charset="UTF-8">
		<title></title>
	</head>

	<body>
		这个版本与之前相比主要解决以下两个需求<br>：
		在登记号码的时候进行一下判重操作，重复号码就不登记了；<br> 
		买家登记之后想了一下又不感兴趣了，那么以后也就不需要通知了，增加取消订阅的操作；
	</body>
	<script>
		const adadisPub = {
			adadisBook: [], // adadis售货员的小本本
			subShoe(customer) { // 买家在小本本是登记号码
				if(!this.adadisBook.includes(customer)) // 判重
					this.adadisBook.push(customer)
			},
			unSubShoe(customer) { // 取消订阅
				if(!this.adadisBook.includes(customer)) return
				const idx = this.adadisBook.indexOf(customer)
				this.adadisBook.splice(idx, 1)
			},
			notify() { // 售货员打电话通知小本本上的买家
				for(const customer of this.adadisBook) {
					customer.update()//注意：这里还是已知传参的方法名，固定写死了update，下个版本我们写成传参方法名。
				}
			}
		}

		const customer1 = {
			phoneNumber: '152xxx',
			update() {
				console.log(this.phoneNumber + ': 去商场看看')
			}
		}

		const customer2 = {
			phoneNumber: '138yyy',
			update() {
				console.log(this.phoneNumber + ': 给表弟买双')
			}
		}

		adadisPub.subShoe(customer1) // 在小本本上留下号码
		adadisPub.subShoe(customer1)
		adadisPub.subShoe(customer2)
		//adadisPub.unSubShoe(customer1)//取消订阅

		adadisPub.notify() // 打电话通知买家到货了

		// 138yyy: 给表弟买双
	</script>

</html>